package com.bitejiuyeke.job_publish.service;

import com.bitejiuyeke.job_publish.common.PageResult;
import com.bitejiuyeke.job_publish.enums.JobStateEnum;
import com.bitejiuyeke.job_publish.model.Job;

public interface IJobService {

    /**
     * 发布职位
     * @param job 对象
     */
    void create (Job job);

    /**
     * 根据Id删除职位
     * @param id 职位Id
     */
    void deleteById (Long id, Long userId);

    /**
     * 修改职位状态
     * @param id 职位Id
     * @param stateEnum 状态
     */
    void modifyState (Long id, JobStateEnum stateEnum, Long userId);

    /**
     * 修改职位信息
     * @param job 要修改的对象
     */
    void modify (Job job);

    /**
     * 根据Id查询
     * @param id 职位Id
     * @return Job对象
     */
    Job selectById (Long id);

    /**
     * 增加收藏数
     * @param count
     */
    void addFavoriteCount (Long id, Integer count);

    /**
     * 减少收藏数
     * @param count
     */
    void minusFavoriteCount (Long id, Integer count);

    /**
     * 增加接收简历数
     * @param count
     */
    void addReceiveCount (Long id, Integer count);

    /**
     * 增加访问数
     * @param count
     */
    void addVisitCount (Long id, Integer count);

    /**
     * 首页列表中的职位总数
     * @param record
     * @return
     */
    int totalCount(Job record);

    /**
     * 首页列表分页显示
     * @param record
     * @return
     */
    PageResult<Job> selectByPage (Job record);

    /**
     * 根据用户条件获取记录总数
     * @param record
     * @return
     */
    int totalCountByUser(Job record);

    /**
     * 根据用户条件获取分页记录
     * @param record
     * @return
     */
    PageResult<Job> selectPageByUser(Job record);
}
